package com.tool.cn.use;

/**
 * 为任务指定线程运行时间，等到指定时间，验证任务状态，如果运行就停止
 * @author wangzh
 * @date 2019年6月27日 下午4:58:31
 */
public class ThreadTimeModel extends Thread{
	
	/**
	 * 任务状态0 未处理  1 正常处理 2 超时处理
	 */
	private Integer state=0;
	
	@SuppressWarnings("deprecation")
	public void waitRun(int time){
		this.start();
		  try{
		     this.join(time); //start启动后，等待时间线程
		  }catch (InterruptedException e){
			  e.printStackTrace();
		  }
		  if(state==0) {
			  //超时操作
			  getData("key", 2);
		  }
		  this.stop();  //超时关闭run方法
	}
	
	@Override
	public void run() {
		//TODO 业务部分
		getData("key", 1);
	}
	
	/**
	 * 多线程修改状态
	 */
	private synchronized void getData(String key,int num) {
		synchronized (state) {
			if(state==0) {
				state=num;
			}
		}
	}

}
